package com.flyqiu.common.sc;

import com.flyqiu.common.sc.statistical.IFlyQiuStatistical;

import java.util.Collection;

/**
 * FlyQiuSCContext接口提供了操作上下文的通用方法
 * 它用于在FlyQiu软件组件中管理数据源和统计实例等操作
 *
 * @param <E> 数据源中的元素类型
 */
public interface FlyQiuSCContext<E> {

    /**
     * 获取当前数据源的行索引
     *
     * @return 当前行索引
     */
    int getRowIndex();

    /**
     * 设置当前数据源的行索引
     *
     * @param index 新的行索引值
     */
    void setRowIndex(int index);

    /**
     * 获取数据源的大小
     *
     * @return 数据源的大小
     */
    int getDataSourceSize();

    /**
     * 获取当前数据源的键
     *
     * @return 当前键对象
     */
    Object getKey();

    /**
     * 获取统计实例
     *
     * @return 统计实例对象
     */
    IFlyQiuStatistical<?> getStatisticalInstance();

    /**
     * 设置统计实例
     *
     * @param statisticalInstance 要设置的统计实例对象
     */
    void setStatisticalInstance(IFlyQiuStatistical<?> statisticalInstance);

    /**
     * 获取SC管理对象
     *
     * @return SC管理对象
     */
    FlyQiySCManage getScManage();

    /**
     * 获取数据源集合
     *
     * @return 数据源集合
     */
    Collection<E> getDataSource();

    /**
     * 获取当前元素
     *
     * @return 当前元素
     */
    E getCurrentElement();
}
